package com.nanhai.buddhist.college.module.collegebase.service.accommodationroom;

import com.nanhai.buddhist.college.framework.common.pojo.PageResult;
import com.nanhai.buddhist.college.module.collegebase.controller.admin.accommodationroom.vo.AccommodationRoomCreateReqVO;
import com.nanhai.buddhist.college.module.collegebase.controller.admin.accommodationroom.vo.AccommodationRoomExportReqVO;
import com.nanhai.buddhist.college.module.collegebase.controller.admin.accommodationroom.vo.AccommodationRoomPageReqVO;
import com.nanhai.buddhist.college.module.collegebase.controller.admin.accommodationroom.vo.AccommodationRoomUpdateReqVO;
import com.nanhai.buddhist.college.module.collegebase.dal.dataobject.accommodationroom.AccommodationRoomDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 房间 Service 接口
 *
 * @author AKai
 */
public interface AccommodationRoomService {

    /**
     * 创建房间
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createAccommodationRoom(@Valid AccommodationRoomCreateReqVO createReqVO);

    /**
     * 更新房间
     *
     * @param updateReqVO 更新信息
     */
    void updateAccommodationRoom(@Valid AccommodationRoomUpdateReqVO updateReqVO);

    /**
     * 删除房间
     *
     * @param id 编号
     */
    void deleteAccommodationRoom(String id);

    /**
     * 获得房间
     *
     * @param id 编号
     * @return 房间
     */
    AccommodationRoomDO getAccommodationRoom(String id);

    /**
     * 获得房间列表
     *
     * @param ids 编号
     * @return 房间列表
     */
    List<AccommodationRoomDO> getAccommodationRoomList(Collection<String> ids);

    /**
     * 获得房间分页
     *
     * @param pageReqVO 分页查询
     * @return 房间分页
     */
    PageResult<AccommodationRoomDO> getAccommodationRoomPage(AccommodationRoomPageReqVO pageReqVO);

    /**
     * 获得房间列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 房间列表
     */
    List<AccommodationRoomDO> getAccommodationRoomList(AccommodationRoomExportReqVO exportReqVO);

    /***
     * 数据返回时封装链表数据  自用
     * @param list
     * @return
     */
    List<AccommodationRoomDO> setPageResVo(List<AccommodationRoomDO> list);

    /** 根据系部id  获取房间列表
     * @param departmentId
     * @return
     */
    List<AccommodationRoomDO> getAccommodationRoomListByDepartmentId(String departmentId);


    List<AccommodationRoomDO> getAccommodationRoomListByFloorId(String departmentId);

}
